using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using AvaProvi;
using Brain;
namespace AvaProvi
{
    public partial class ctlTConstruccion : AvaProvi.ControlBase
    {
        VSimbolo vs;
        Validadora val;

        public ctlTConstruccion()
            : base()
        {
            InitializeComponent();
            ActualizaPanel();
        }

        public override void ActualizaDatos()
        {
            base.ActualizaDatos();
            this.bsConstruccion.EndEdit();
            clsAvaluo_CRN.AvaluoActual.Guardar();
            ActualizaPanel();
        }

        public override void ActualizaPanel()
        {
            this.bsConstruccion.DataSource = clsAvaluo_CRN.AvaluoActual.Inmueble.Terreno.Construccion;
            this.bsSuperficiesAccesorias.DataSource = clsAvaluo_CRN.AvaluoActual.Inmueble.Terreno.SuperficiesAccesorias;
            this.bsSuperficiesAccesorias.ResetBindings(false);
            this.bsConstruccion.ResetBindings(false);
            this.DesactivaControles();
        }

        private void regTiposConstDataGridView_Click(object sender, EventArgs e)
        {
            if (clsAvaluo_CRN.AvaluoActual.Inmueble.Terreno.Construccion.TiposDeConstruccion.Count == 0)
                CreaTipoDeCosntruccion();
        }

        private void regTiposConstDataGridView_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
        {
            clsTipoDeConstruccion_CRN objTipoConstruccionEliminado = (clsTipoDeConstruccion_CRN)(e.Row.DataBoundItem);
            objTipoConstruccionEliminado.EsEliminado = true;
            objTipoConstruccionEliminado.Guardar();
        }

        private void regTiposConstDataGridView_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == 13)
            {
                CreaTipoDeCosntruccion();
            }
        }

        private void CreaTipoDeCosntruccion()
        {
            clsTipoDeConstruccion_CRN objTipoDeConstruccion = new clsTipoDeConstruccion_CRN(clsAvaluo_CRN.AvaluoActual.Inmueble.Terreno.Construccion);
            clsAvaluo_CRN.AvaluoActual.Inmueble.Terreno.Construccion.TiposDeConstruccion.Add(objTipoDeConstruccion);
            bsConstruccion.ResetBindings(false);
        }

        private void CreaSuperficieAccesoria()
        {
            clsSuperficieAccesoria_CRN objSuperficie = new clsSuperficieAccesoria_CRN(clsAvaluo_CRN.AvaluoActual.Inmueble.Terreno);
            clsAvaluo_CRN.AvaluoActual.Inmueble.Terreno.SuperficiesAccesorias.Add(objSuperficie);
            bsSuperficiesAccesorias.ResetBindings(false);
        }

        private void regTiposConstDataGridView_CellValidated(object sender, DataGridViewCellEventArgs e)
        {
            this.FormularioContenedor.Refresh();
        }

        private void gvSuperficiesAccesorias_Click(object sender, EventArgs e)
        {
            if (clsAvaluo_CRN.AvaluoActual.Inmueble.Terreno.SuperficiesAccesorias.Count == 0)
                CreaSuperficieAccesoria();
        }

        private void gvSuperficiesAccesorias_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == 13)
            {
                CreaSuperficieAccesoria();
            }
        }

        private void gvSuperficiesAccesorias_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
        {
            clsSuperficieAccesoria_CRN objSuperficeAccesiria = (clsSuperficieAccesoria_CRN)(e.Row.DataBoundItem);
            objSuperficeAccesiria.EsEliminado = true;
            objSuperficeAccesiria.Guardar();
        }

        private void DesactivaControles()
        {
            if (clsAvaluo_CRN.AvaluoActual.Inmueble.RegimenDePropiedad == "Condominal")
            {
                this.txtDescAComunes.Enabled = true;
                this.txtDescAPrivativas.Enabled = true;
                this.txtGradoTAComunes.Enabled = true;
                this.txtSupAComunes.Enabled = true;
                this.txtSupAPrivativas.Enabled = true;
                this.cbxAcomunesTerm.Enabled = true;
            }
            else
            {
                this.txtDescAComunes.Enabled = false;
                this.txtDescAPrivativas.Enabled = false;
                this.txtGradoTAComunes.Enabled = false;
                this.txtSupAComunes.Enabled = false;
                this.txtSupAPrivativas.Enabled = false;
                this.cbxAcomunesTerm.Enabled = false;
            }
        }

        private void regTiposConstDataGridView_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {
            TextBox txt = (TextBox)e.Control;
            txt.KeyPress += validar_Keypress_repTipCon; 
        }
        private void validar_Keypress_repTipCon(object sender, System.Windows.Forms.KeyPressEventArgs e)
        {
            int columna = regTiposConstDataGridView.CurrentCell.ColumnIndex;
            if (columna == 2 || columna == 3 || columna == 4 || columna == 5)
            {
                char caracter = e.KeyChar;
                // referencia a la celda   
                TextBox txt = (TextBox)sender;
                vs = new VSimbolo();
                e.Handled = vs.esDecimal(caracter, (txt.Text).Trim());
            }
        }
        private void regTiposConstDataGridView_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
        {
            string dato = e.FormattedValue.ToString();
            val = new Validadora();
            int gv = regTiposConstDataGridView.Columns[e.ColumnIndex].Index;
            if (gv == 2 || gv == 3 || gv == 4 || gv == 5)
            {
                if (!val.esReal(dato))
                {
                    e.Cancel = true;
                }
            }
        }

        private void gvSuperficiesAccesorias_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {
            TextBox txt = (TextBox)e.Control;
            txt.KeyPress += validar_Keypress_gvSA; 
        }
        private void validar_Keypress_gvSA(object sender, System.Windows.Forms.KeyPressEventArgs e)
        {
            int columna = gvSuperficiesAccesorias.CurrentCell.ColumnIndex;
            if (columna == 1)
            {
                char caracter = e.KeyChar;
                // referencia a la celda   
                TextBox txt = (TextBox)sender;
                vs = new VSimbolo();
                e.Handled = vs.esDecimal(caracter, (txt.Text).Trim());
            }
        }
        private void gvSuperficiesAccesorias_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
        {
            string dato = e.FormattedValue.ToString();
            val = new Validadora();
            if (gvSuperficiesAccesorias.Columns[e.ColumnIndex].Index == 1)
            {
                if (!val.esReal(dato))
                {
                    e.Cancel = true;
                }
            }
        }

        private void anioTerminaObraTextBox_KeyPress(object sender, KeyPressEventArgs e)
        {
            vs = new VSimbolo();
            e.Handled = vs.esEntero(e.KeyChar, (anioTerminaObraTextBox.Text).Trim());
        }

        private void txtDescAComunes_TextChanged(object sender, EventArgs e)
        {

        }
    }
}
